﻿using System;

namespace _5
{
    // （1）矩形类Rect
    public class Rect
    {
        // 属性：矩形的宽和高
        public double Width { get; set; }
        public double Height { get; set; }

        // 带两个参数的构造方法
        public Rect(double width, double height)
        {
            Width = width;
            Height = height;
        }

        // 不带参数的构造方法，宽和高都为10
        public Rect()
        {
            Width = 10;
            Height = 10;
        }

        // 求矩形面积的方法
        public double Area()
        {
            return Width * Height;
        }

        // 求矩形周长的方法
        public double Perimeter()
        {
            return 2 * (Width + Height);
        }
    }

    // （2）具有确定位置的矩形类PlainRect，继承Rect类
    public class PlainRect : Rect
    {
        // 添加两个属性：矩形左上角坐标
        public double StartX { get; set; }
        public double StartY { get; set; }

        // 带4个参数的构造方法
        public PlainRect(double startX, double startY, double width, double height)
            : base(width, height)  // 调用父类构造方法初始化width和height
        {
            StartX = startX;
            StartY = startY;
        }

        // 不带参数的构造方法，左上角坐标、长和宽都为0
        public PlainRect() : base(0, 0)  // 调用父类构造方法初始化width和height为0
        {
            StartX = 0;
            StartY = 0;
        }

        // 判断某个点是否在矩形内部的方法
        public bool IsInside(double x, double y)
        {
            // 计算矩形的右下角坐标
            double endX = StartX + Width;
            double endY = StartY - Height;  // 注意：Y轴向下为正，所以是减

            // 判断点是否在矩形内部
            return x >= StartX && x <= endX && y <= StartY && y >= endY;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // （3）测试程序

            // 创建一个左上角坐标为（10，10），长为20，宽为10的矩形对象
            PlainRect rect = new PlainRect(10, 10, 20, 10);

            // 计算并打印输出矩形的面积和周长
            Console.WriteLine("矩形信息：");
            Console.WriteLine($"左上角坐标: ({rect.StartX}, {rect.StartY})");
            Console.WriteLine($"宽度: {rect.Width}, 高度: {rect.Height}");
            Console.WriteLine($"面积: {rect.Area():F2}");
            Console.WriteLine($"周长: {rect.Perimeter():F2}");

            Console.WriteLine();

            // 判断点(25.5，13)是否在矩形内
            double testX = 25.5;
            double testY = 13;
            bool isInside = rect.IsInside(testX, testY);

            // 打印输出相关信息
            Console.WriteLine($"点({testX}, {testY})是否在矩形内: {isInside}");

            if (isInside)
            {
                Console.WriteLine($"点({testX}, {testY})位于矩形内部");
            }
            else
            {
                Console.WriteLine($"点({testX}, {testY})不在矩形内部");
            }

            
        }
    }
}